#include <rtdevice.h>
#include <rtthread.h>
#include <aht10.h>  // 包含AHT10传感器的驱动

#define AHT_I2C_BUS_NAME "i2c3"

// 线程堆栈大小
#define THREAD_STACK_SIZE 1024
// 线程优先级
#define THREAD_PRIORITY   10
// 线程周期时间，单位：毫秒
#define THREAD_PERIOD     5000

int humi, temp;
aht10_device_t AHT = RT_NULL;  // 设备句柄

// 温湿度线程
void temp_humi_thread(void *p)
{
    while (1)
    {
        // 读取湿度和温度
        humi = aht10_read_humidity(AHT);
        temp = aht10_read_temperature(AHT);

        // 延时1秒
        rt_thread_mdelay(THREAD_PERIOD);
    }
}

// 创建线程
int temp_humi_thread_entry(void)
{
    // 设备初始化
    AHT = aht10_init(AHT_I2C_BUS_NAME);
    if (AHT == RT_NULL)
    {
        rt_kprintf("AHT10 initialization failed!\n");
        return -1;  // 初始化失败，返回错误
    }

    // 创建温湿度线程
    rt_thread_t tid = rt_thread_create("temp_humi",     // 线程名字
                                       temp_humi_thread,  // 线程入口函数
                                       RT_NULL,           // 线程入口函数的参数
                                       THREAD_STACK_SIZE, // 线程堆栈大小
                                       THREAD_PRIORITY,   // 线程优先级
                                       THREAD_PERIOD);    // 线程周期时间

    if (tid != RT_NULL)
    {
        rt_thread_startup(tid);  // 启动线程
    }
    else
    {
        rt_kprintf("Thread creation failed!\n");
        return -1;  // 线程创建失败，返回错误
    }

    return 0;
}

